﻿(function () {
    "use strict";

    var list = new WinJS.Binding.List();
    var groupedItems = list.createGrouped(
        function groupKeySelector(item) { return item.group.key; },
        function groupDataSelector(item) { return item.group; }
    );

    // TODO: Reemplace los datos con los datos reales.
    // Puede agregar datos de orígenes asincrónicos siempre que estén disponibles.
    generateSampleData().forEach(function (item) {
        list.push(item);
    });

    WinJS.Namespace.define("Data", {
        items: groupedItems,
        groups: groupedItems.groups,
        getItemReference: getItemReference,
        getItemsFromGroup: getItemsFromGroup,
        resolveGroupReference: resolveGroupReference,
        resolveItemReference: resolveItemReference
    });

    // Obtener una referencia para un elemento mediante la clave de grupo y el título del elemento como
    // referencia única al elemento que pueda serializarse fácilmente.
    function getItemReference(item) {
        return [item.group.key, item.title];
    }

    // Esta función devuelve un objeto WinJS.Binding.List que contiene solamente los elementos
    // pertenecientes al grupo proporcionado.
    function getItemsFromGroup(group) {
        return list.createFiltered(function (item) { return item.group.key === group.key; });
    }

    // Consiga el grupo único que corresponde a la clave de grupo proporcionada.
    function resolveGroupReference(key) {
        for (var i = 0; i < groupedItems.groups.length; i++) {
            if (groupedItems.groups.getAt(i).key === key) {
                return groupedItems.groups.getAt(i);
            }
        }
    }

    // Consiga un elemento único de la matriz de cadenas proporcionada, que debe contener una
    // clave de grupo y un título de elemento.
    function resolveItemReference(reference) {
        for (var i = 0; i < groupedItems.length; i++) {
            var item = groupedItems.getAt(i);
            if (item.group.key === reference[0] && item.title === reference[1]) {
                return item;
            }
        }
    }

    // Devuelve una matriz de datos de muestra que se puede agregar a la lista de datos
    // de la aplicación. 
    function generateSampleData() {
        //Imagenes Princpales
        var imageTileTemuco = '../images/Tiles/TileTemuco.jpg';
        var imageTileVillarrica = '../images/Tiles/TileVillarrica.jpg';
        var imageTilePucon = '../images/Tiles/TilePucon.jpg';
        var imageTileLicanRay = '../images/Tiles/TileLicanRay.jpg';
        var imageTileCaburgua = '../images/Tiles/TileCaburgua.jpg';
        var imageTileLonquimai = '../images/Tiles/TileLonquimai.jpg';
        var imageTilePuertoSaavedra = '../images/Tiles/TilePuertoSaavedra.jpg';
        
        var itemContent = "Prueba de contenido";
        var itemDescription = "Prueba de descripcion";
        var groupDescription = "Descripción de grupo";

        // Estas tres cadenas codifican las imágenes de marcador de posición. Establezca la
        // propiedad backgroundImage en los datos reales si desea que actúen como direcciones URL para las imágenes.
        var darkGray = "";
        var lightGray = "";
        var mediumGray = "";

        // Cada uno de estos grupos de ejemplo debe tener una clave única que se muestre
        // por separado.
        var sampleGroups = [
            { key: "group1", title: "Temuco, Capital", subtitle: "Capital", backgroundImage: imageTileTemuco, description: groupDescription },
            { key: "group2", title: "Villarrica", subtitle: "Ciudad", backgroundImage: imageTileVillarrica, description: groupDescription },
            { key: "group3", title: "Pucon", subtitle: "Ciudad", backgroundImage: imageTilePucon, description: groupDescription },
            { key: "group4", title: "Lican Ray", subtitle: "Ciudad", backgroundImage: imageTileLicanRay, description: groupDescription },
            { key: "group5", title: "Caburgua", subtitle: "Ciudad", backgroundImage: imageTileCaburgua, description: groupDescription },
            { key: "group6", title: "Lonquimai", subtitle: "Ciudad", backgroundImage: imageTileLonquimai, description: groupDescription },
            { key: "group7", title: "Puerto Saavedra", subtitle: "Ciudad", backgroundImage: imageTilePuertoSaavedra, description: groupDescription }
        ];

        // Cada uno de estos elementos de ejemplo debe tener una referencia a un grupo
        // determinado.
        var descripcionTemuco = "";
        var sampleItems = [
            { group: sampleGroups[0], title: "Temuco", subtitle: "La capital", description: itemDescription, content: itemContent, backgroundImage: lightGray },
            { group: sampleGroups[0], title: "Historia", subtitle: "Temuco en el pasado", description: itemDescription, content: itemContent, backgroundImage: darkGray },
            { group: sampleGroups[0], title: "Donde ir", subtitle: "Donde ir", description: itemDescription, content: itemContent, backgroundImage: mediumGray },

            { group: sampleGroups[1], title: "Villarrica", subtitle: "Cercano al volcan", description: itemDescription, content: itemContent, backgroundImage: darkGray },
            { group: sampleGroups[1], title: "Historia", subtitle: "", description: itemDescription, content: itemContent, backgroundImage: mediumGray },
            { group: sampleGroups[1], title: "Donde ir", subtitle: "Donde ir en Villarrica", description: itemDescription, content: itemContent, backgroundImage: lightGray },

            { group: sampleGroups[2], title: "Pucon", subtitle: "Bajo al volcan", description: itemDescription, content: itemContent, backgroundImage: mediumGray },
            { group: sampleGroups[2], title: "Historia", subtitle: "Pucon antes", description: itemDescription, content: itemContent, backgroundImage: lightGray },
            { group: sampleGroups[2], title: "Donde ir", subtitle: "Atractivos", description: itemDescription, content: itemContent, backgroundImage: darkGray },

            { group: sampleGroups[3], title: "Lican Ray", subtitle: "Playa de lago", description: itemDescription, content: itemContent, backgroundImage: darkGray },
            { group: sampleGroups[3], title: "Historia", subtitle: "Historia de Lican Ray", description: itemDescription, content: itemContent, backgroundImage: lightGray },
            { group: sampleGroups[3], title: "Atractivos turisticos", subtitle: "Donde ir", description: itemDescription, content: itemContent, backgroundImage: darkGray },

            { group: sampleGroups[4], title: "Caburgua", subtitle: "Lago y cascadas", description: itemDescription, content: itemContent, backgroundImage: lightGray },
            { group: sampleGroups[4], title: "Historia", subtitle: "Historia de Caburgua", description: itemDescription, content: itemContent, backgroundImage: darkGray },
            { group: sampleGroups[4], title: "Donde ir", subtitle: "Atractivos turisticos", description: itemDescription, content: itemContent, backgroundImage: mediumGray },

            { group: sampleGroups[5], title: "Lonquimai", subtitle: "Cordillera, centro de ski", description: itemDescription, content: itemContent, backgroundImage: mediumGray },
            { group: sampleGroups[5], title: "Historia", subtitle: "Historia de Historia", description: itemDescription, content: itemContent, backgroundImage: darkGray },
            { group: sampleGroups[5], title: "Atractivos turisticos", subtitle: "Donde ir en Lonquimai", description: itemDescription, content: itemContent, backgroundImage: lightGray },

            { group: sampleGroups[6], title: "Puerto Saavedra", subtitle: "Orilla de mar", description: itemDescription, content: itemContent, backgroundImage: darkGray },
            { group: sampleGroups[6], title: "Historia", subtitle: "Puerto Saavedra en la antiguedad", description: itemDescription, content: itemContent, backgroundImage: lightGray },
            { group: sampleGroups[6], title: "Atractivos turisticos", subtitle: "Donde ir en Puerto Saavedra", description: itemDescription, content: itemContent, backgroundImage: mediumGray }

        ];

        return sampleItems;
    }


    function ObtenerDescripcionTemuco()
    {
        return "";

    }

})();
